import addCart from '../mixins/addCart'

export default {
  // 计算商品总价格
  calcTotal (state, total) {
    state.cart.total = total
  },
  // 增加
  addNum (state, index) {
    state.cart.lists[index].num++
  },
  // 减少
  reduceNum (state, index) {
    state.cart.lists[index].num--
    if (state.cart.lists[index].num <= 1) {
      state.cart.lists[index].num = 1
    }
  },
  // 删除
  delItem (state, index) {
    state.cart.lists.splice(index, 1)
  },
  // 购物车全选
  setAllChecked (state, allChecked) {
    state.cart.isAllChecked = allChecked
  },
  // 全选改变单选状态
  setSingleCheck (state, checked) {
    state.cart.lists.forEach(item => {
      item.isChecked = checked
    })
  },
  // 设置购物车
  setCart (state, cart) {
    state.cart = cart
  },
  // 加入购物车
  addCart (state, item) {
    state.cart.lists.unshift(item)
  },
  // 生成订单页（一般提交的时候有后端处理，前端结束，我们这里模拟）
  createOrder (state, items) {
    state.currentOrder.items = items
    state.currentOrder.total = state.cart.total
  },
  setOrderContact (state, contact) {
    state.currentOrder.contact = contact
  },
  addContact (state, contact) {
    /*
    判断  contact是不是默认地址
    如果不是 直接增加
    否则
    将所有 联系人都变成  非默认地址
    然后再插入
    */
    if (!contact.isDefault) {
      state.contacts.push(contact)
    } else {
      if (state.contacts.length === 0) {
        state.contacts.push(contact)
      } else {
        state.contacts.forEach(el => {
          el.isDefault = false
        })
        state.contacts.push(contact)
      }
    }
  },
  editContact (state, { contact, index }) {
    /*
    判断 是不是 将地址 变成默认地址
    如果不是 直接修改
    否则：
      判断有没有默认地址 有改成 非默认地址
      否则 直接 修改
    */
    if (!contact.isDefault) {
      state.contacts[index] = contact
    } else {
      state.contacts.forEach(el => {
        el.isDefault = false
      })
      state.contacts[index] = contact
    }
  }
}
